<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.3.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"example.com","root":"/","scheme":"Muse","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
  </script>

  <meta name="description" content="什么是微服务框架微服务是系统构架上的一种设计风格，它的主旨是将一个原本独立的系统拆分成多个小型服务，这些小型服务在各自独立的进程中运行，服务之间通过基于HTTP的RESTful API进行通信协作。被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建，并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础，所以这些微服">
<meta property="og:type" content="article">
<meta property="og:title" content="微服务构架及现状分析">
<meta property="og:url" content="http://example.com/2021/01/13/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%84%E6%9E%B6%E5%8F%8A%E7%8E%B0%E7%8A%B6%E5%88%86%E6%9E%90/index.html">
<meta property="og:site_name" content="解救Z先生">
<meta property="og:description" content="什么是微服务框架微服务是系统构架上的一种设计风格，它的主旨是将一个原本独立的系统拆分成多个小型服务，这些小型服务在各自独立的进程中运行，服务之间通过基于HTTP的RESTful API进行通信协作。被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建，并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础，所以这些微服">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://example.com/2021/01/13/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%84%E6%9E%B6%E5%8F%8A%E7%8E%B0%E7%8A%B6%E5%88%86%E6%9E%90/hero-image@2x.png">
<meta property="article:published_time" content="2021-01-13T13:53:34.000Z">
<meta property="article:modified_time" content="2021-01-13T14:24:40.507Z">
<meta property="article:author" content="greentree">
<meta property="article:tag" content="微服务">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://example.com/2021/01/13/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%84%E6%9E%B6%E5%8F%8A%E7%8E%B0%E7%8A%B6%E5%88%86%E6%9E%90/hero-image@2x.png">

<link rel="canonical" href="http://example.com/2021/01/13/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%84%E6%9E%B6%E5%8F%8A%E7%8E%B0%E7%8A%B6%E5%88%86%E6%9E%90/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>微服务构架及现状分析 | 解救Z先生</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">解救Z先生</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>

  </li>
        <li class="menu-item menu-item-about">

    <a href="/aboutme/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
  </ul>
</nav>




</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://example.com/2021/01/13/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%84%E6%9E%B6%E5%8F%8A%E7%8E%B0%E7%8A%B6%E5%88%86%E6%9E%90/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="greentree">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="解救Z先生">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          微服务构架及现状分析
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>
              

              <time title="创建时间：2021-01-13 21:53:34 / 修改时间：22:24:40" itemprop="dateCreated datePublished" datetime="2021-01-13T21:53:34+08:00">2021-01-13</time>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <h3 id="什么是微服务框架"><a href="#什么是微服务框架" class="headerlink" title="什么是微服务框架"></a>什么是微服务框架</h3><p>微服务是系统构架上的一种设计风格，它的主旨是将一个原本独立的系统拆分成多个小型服务，这些小型服务在各自独立的进程中运行，服务之间通过基于HTTP的RESTful API进行通信协作。被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建，并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础，所以这些微服务可以使用不同的语言来编写。</p>
<h3 id="微服务框架的优点"><a href="#微服务框架的优点" class="headerlink" title="微服务框架的优点"></a>微服务框架的优点</h3><ol>
<li>易于开发和维护，复杂度可控： 一个微服务只会关注一个特定的业务功能，所以它业务清晰、代码量少。开发和维护单个微服务相对简单。而整个应用是由若干个微服务构建而成的，所以整个应用也会被维持在一个可控状态。</li>
<li>局部修改容易，可独立部署某个微服务： 单体应用只要有修改，就得重新部署整个应用；一般来说，对某个微服务进行修改，只需要重新部署这个服务即可。</li>
<li>技术栈不受限，技术选型更灵活 ： 在微服务构架中，每个微服务都可由不同的团队来维护，所以结合项目业务及团队特点，自由地选择技术栈。</li>
<li>按需伸缩，可扩展性更强： 可根据每个微服务的性能需求和业务特点对服务进行优化和灵活扩展。例如，系统中的某个微服务遇到了瓶颈，可以结合这个微服务的业务特点，增加单个服务外的集群规模，提升部署了该服务节点的硬件配置等。</li>
</ol>
<h3 id="微服务构架面临的挑战"><a href="#微服务构架面临的挑战" class="headerlink" title="微服务构架面临的挑战"></a>微服务构架面临的挑战</h3><ol>
<li>故障排除：一次请求可能会经历多个不同的微服务的多次交互，交互的链路可能会比较长，每个微服务都会产生自己的日志，在这种情况下如果出现一个故障，开发人员定位问题的根源会比较困难。</li>
<li>运维成本： 更多的服务意味着更多的运维投入。在单体构架中，只需要保证一个应用的正常运行。而在微服务中，需要保证几十甚至几百个服务的正常运行与协作，如何快速部署和管理众多的服务成为挑战。</li>
<li>分布式构架的复杂性： 使用微服务构建的是分布式系统。对于一个分布式系统，系统容错、网络延迟、分布式事务等都会带来巨大的挑战。</li>
<li>服务依赖： 微服务数量增加之后，各个服务中之间会存在更多的依赖关系，使得系统整体更为复杂</li>
<li>服务监控：在微服务构架中，服务监控开销会非常大。不仅要对整个链路进行监控，还需要对每一个微服务都实现一套类似单体构架的监控。</li>
</ol>
<h3 id="微服务设计原则"><a href="#微服务设计原则" class="headerlink" title="微服务设计原则"></a>微服务设计原则</h3><ol>
<li>单一职责原则</li>
<li>服务自治原则：每个微服务应具备独立的业务能力、依赖和运行环境。在微服务构架中，服务是独立的业务单元，应该与其它服务高度解耦。每个微服务从开发、测试、构建、部署，都应当可以独立运行，而不应该依赖其它的服务</li>
<li>轻量级通信机制： 体量轻；跨语言、跨平台的。微服务框架中，常用的协议有REST、AMQP、STOMP、MQTT（Message Queuing Telemetry Transport,消息队列遥测传输协议)。</li>
<li>微服务粒度：康威定律（ <a target="_blank" rel="noopener" href="https://www.cnblogs.com/still-smile/p/11646609.html%EF%BC%89">https://www.cnblogs.com/still-smile/p/11646609.html）</a></li>
</ol>
<h3 id="微服务实现构架-Spring-Cloud"><a href="#微服务实现构架-Spring-Cloud" class="headerlink" title="微服务实现构架 - Spring Cloud"></a>微服务实现构架 - Spring Cloud</h3><p>尽管微服务构架为复杂业务提供了很好的解决方案，但是也给开发、测试、运维带来了非常大的挑战。在微服务一体化解决方案出现之前，各个公司在实现微服务化的过程中都比较痛苦，直到Spring Cloud的出现。</p>
<p>目前Spring Cloud是作为微服务开发框架的最佳选择。Spring Cloud是Pivotal公司在2015年发布的一个项目，Spring就是Pivotal公司研发的。Spring Cloud为微服务构架提供了完整的解决方案，它提供了可以让开发者快速构建微服务应用的工具，比如配置管理、服务发现、熔断、智能路由等。这些服务可以在任何分布式环境下很好地工作，其核心功能包括</p>
<ul>
<li>Distributed/versioned configuration 分布式/版本化的配置管理</li>
<li>Service registration and discovery 服务注册与服务发现</li>
<li>Routing 路由</li>
<li>Service-to-service calls 端到端的调用</li>
<li>Load balancing 负载均衡</li>
<li>Circuit Breakers 断路器</li>
<li>Global locks 全局锁</li>
<li>Leadership election and cluster state 选举与集群状态管理</li>
<li>Distributed messaging 分布式消息</li>
</ul>
<p>Spring Cloud并不是Spring团队全新研发的框架，它只是把一些比较优秀的解决微服务框架中常见问题的开源框架基于Spring Colud规范进行了整合，<strong>通过Spring Boot这个框架进行再次封装</strong>后屏蔽掉了复杂的配置，给开发者提供良好的微服务开发体验。尽管Spring Cloud带有“Cloud”的字样，但它并不是云计算解决方案，而<strong>是在Spring Boot基础上构建的，用于快速构建分布式系统的通用模式的工具集</strong>。不难看出，Spring Cloud就是一套整合了各大公司开源技术的规范，而Spring Cloud Neteflix、Spring Cloud Consul、Spring Cloud Alibaba才是Spring Cloud规范的实现。</p>
<p>Spring Cloud非常适合在我们目前的团队中使用。首先，Spring Cloud具备开箱即用的生产特性，可大大提升开发效率；其次，Spring Cloud的文档丰富、社区活跃，遇到问题比较容易获得支持。最后，使用Spring Cloud开发的应用程序非常适合在Docker或者PaaS（例如Cloud Foundry）上部署，所以又叫做云原生应用（Cloud Native Application）。云原生（Cloud Native）可简单理解为面向云环境的软件架构。微服务并不绑定运行平台，将微服务部署在PC Server，或者阿里云、AWS等云计算平台都是可以的。可以方便的通过Docker/Podman/K8s进行微服务部署。</p>
<p>Spring Cloud规范下的实现 - 在Spring Cloud这个规范下，有很多实现，比如：</p>
<ol>
<li>Spring-Cloud-Bus</li>
<li>Spring-Cloud-Netflix</li>
<li>Spring-Cloud-Zookeeper</li>
<li>Spring-Cloud-Gateway</li>
</ol>
<p>在这些实现中，绝大部分组件都使用“别人已经造好的轮子”，然后基于Spring Cloud规范进行整合，使用者只需要使用非常简单的配置即可完成微服务框架下复杂的需求。只有在别人提供的东西不够好的情况下，Spring团队才会考虑自己研发。比如Spring Cloud Netlflix中的Zuul网关，因为性能及版本迭代较慢，所以孵化了一个Spring Cloud Gateway来取代Zuul。</p>
<p>Spring Cloud生态下服务治理的解决方案主要有两个：Spring Cloud Netflix和Spring Cloud Alibaba。这两个解决方案分别针对Netflix OSS及Alibaba的服务治理体系基于Spring Cloud规范做的整合。</p>
<h3 id="Spring-Cloud生态下服务治理解决方案-Spring-Could-Netflix-vs-Spring-Cloud-Alibaba"><a href="#Spring-Cloud生态下服务治理解决方案-Spring-Could-Netflix-vs-Spring-Cloud-Alibaba" class="headerlink" title="Spring Cloud生态下服务治理解决方案 - Spring Could Netflix vs. Spring Cloud Alibaba"></a>Spring Cloud生态下服务治理解决方案 - Spring Could Netflix vs. Spring Cloud Alibaba</h3><p>从2016年开始，Spring Cloud逐步在国内普及，它提供了微服务开发、服务治理、监控等一体化解决方案。有了这个生态，中小型互联网公司要构建微服务，不需要再去找各种开源组件来集成。通过Spring Cloud可以轻松快速地构建微服务。</p>
<p>Spring Cloud服务治理的整个体系采用的是Netflix公司提供的开源组件，但是Netflix公司开源组件的活跃度不是很高，并且Netflix公司官方也声明了对于很多组件逐步进入维护模式。所以Spring Cloud官方发布了声明，Spring Cloud Netflix下的相关组件也会逐步进入维护模式（进入维护模式的意思就是从目前一直到以后一段时间Spring Cloud Netflix提供的服务和功能就这么多了，不再开发新的组件和功能了）。同时Spring Cloud 官方也在积极孵化其他替代品，以满足Spring Cloud 版本迭代的需求。</p>
<p>值得高兴的是，2018年10月31日的凌晨，Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器，并在Maven中央库发布了第一个版本；2019年8月1日，在Alibaba仓库发布了第一个毕业版本。</p>
<p>Spring Cloud Alibaba生态下的各个组件其实在国内很多公司很早之前就有使用，它们在服务治理方面比Spring Cloud Netflix更加强大，而且比较符合国内互联网公司的业务特性！</p>
<p>Spring CloudNetflix 主要为微服务框架下的服务治理提供解决方案，包括以下组件：</p>
<ol>
<li>Eureka - 服务注册与发现</li>
<li>Zuul - 服务网关</li>
<li>Ribbon - 负载均衡</li>
<li>Feign - 远程服务的客户端代理</li>
<li>Hystrix - 断路器，提供服务熔断和限流功能</li>
<li>Hystrix Dashboard - 监控面板</li>
<li>Turbine - 将各个服务实例上的Hystrix监控信息进行统一聚合</li>
</ol>
<p>Spring Cloud Alibaba主要为微服务开发提供一站式的解决方案，使开发者通过Spring Cloud编程模型轻松地解决微服务框架下的各类技术问题。以下是Spring Cloud Alibaba生态下的主要功能组件：</p>
<ol>
<li>Sentinel - 流量控制和服务降级</li>
<li>Nacos - 服务注册与发现</li>
<li>Nacos - 分布式配置中心</li>
<li>RocketMQ - 消息驱动</li>
<li>Seate - 分布式事务</li>
<li>Dubbo - RPC通信</li>
<li>OSS - 阿里云对象存储（收费的云服务）</li>
</ol>
<h2 id="Spring-Cloud-Netflix"><a href="#Spring-Cloud-Netflix" class="headerlink" title="Spring Cloud Netflix"></a><strong>Spring Cloud Netflix</strong></h2><p>目前业界对Spring Cloud使用最广的就是Spring Cloud Netflix了。这TM一下80%都进入“维护模式”，再也没有新功能福利了，让人如何是好啊！<strong>就目前来看，继续使用Spring Cloud Netflix问题不大，但长期来看，显然是不合适的。</strong></p>
<p>官方建议的替代项目如下表所示：</p>
<table>
<thead>
<tr>
<th align="left">当前</th>
<th align="left">替代项目</th>
</tr>
</thead>
<tbody><tr>
<td align="left">Hystrix</td>
<td align="left"><a target="_blank" rel="noopener" href="https://github.com/resilience4j/resilience4j">Resilience4j</a></td>
</tr>
<tr>
<td align="left">Hystrix Dashboard / Turbine</td>
<td align="left">Micrometer + Monitoring System</td>
</tr>
<tr>
<td align="left">Ribbon</td>
<td align="left">Spring Cloud Loadbalancer</td>
</tr>
<tr>
<td align="left">Zuul 1</td>
<td align="left">Spring Cloud Gateway</td>
</tr>
<tr>
<td align="left">Archaius 1</td>
<td align="left">Spring Boot external config + Spring Cloud Config</td>
</tr>
</tbody></table>
<h2 id="未来-amp-其他的候选者"><a href="#未来-amp-其他的候选者" class="headerlink" title="未来&amp;其他的候选者"></a>未来&amp;其他的候选者</h2><p>我相信未来Spring Cloud的生态会越来越好。事实上Spring Cloud生态中还有其他的替换项目&amp;更多选择：</p>
<table>
<thead>
<tr>
<th align="left">作用</th>
<th align="left">业界用得最多</th>
<th align="left">已孵化成功的替代项目</th>
<th align="left">孵化中的替代项目</th>
</tr>
</thead>
<tbody><tr>
<td align="left">服务发现</td>
<td align="left">Eureka</td>
<td align="left">Consul、Zookeeper</td>
<td align="left">Alibaba Nacos</td>
</tr>
<tr>
<td align="left">负载均衡器</td>
<td align="left">Ribbon</td>
<td align="left">-</td>
<td align="left">-（Hoxton M3才会有替代品）</td>
</tr>
<tr>
<td align="left">断路器</td>
<td align="left">Hystrix</td>
<td align="left">-</td>
<td align="left">Resilience4j、Alibaba Sentinel</td>
</tr>
<tr>
<td align="left">声明式HTTP客户端</td>
<td align="left">Feign</td>
<td align="left">-</td>
<td align="left">Retrofit</td>
</tr>
<tr>
<td align="left">API网关</td>
<td align="left">Zuul 1</td>
<td align="left">Spring Cloud Gateway</td>
<td align="left">-</td>
</tr>
<tr>
<td align="left">配置管理</td>
<td align="left">Spring Cloud Config</td>
<td align="left">Consul、Zookeeper</td>
<td align="left">Alibaba Nacos</td>
</tr>
</tbody></table>
<h3 id="补充信息-Alibaba-Nacos"><a href="#补充信息-Alibaba-Nacos" class="headerlink" title="补充信息 - Alibaba Nacos"></a>补充信息 - Alibaba Nacos</h3><p>Nacos 是阿里开源的易于构建云原生应用的动态服务发现、配置管理和服务管理平台。</p>
<p>Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集，帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。</p>
<p><strong>通俗来说，Nacos是一个注册中心&amp; 配置中心</strong> ——作为注册中心，Nacos可用于替代Spring Cloud中的Eureka、Spring Cloud Zookeeper Discovery、Spring Cloud Consul Discovery；作为配置中心，Nacos可用于替代Spring Cloud Config、Spring Cloud Zookeper Config、Spring Cloud Consul Config。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">TIPS：</span><br><span class="line">其实从Nacos命名的由来：Dynamic Naming and Configuration Service 即可顾名思义了。</span><br></pre></td></tr></table></figure>
<p>Nacos - 它使用内嵌数据库Derby，这显然不适用于生产</p>
<p>Nacos -  配置管理，不用GIT server方案，也不用Spring Cloud Bus + AMQP方案通知各个微服务</p>
<img src="/2021/01/13/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%84%E6%9E%B6%E5%8F%8A%E7%8E%B0%E7%8A%B6%E5%88%86%E6%9E%90/hero-image@2x.png" class title="title text" alt="alt text">

<p>Nacos -  高可用集群方案，可以使用Nginx后跟多个Nacos服务器，每个服务器连接高可靠的数据库服务器；这点和Eureka的高可用方案不同；<a target="_blank" rel="noopener" href="http://www.itmuch.com/spring-cloud-alibaba/nacos-ha/">http://www.itmuch.com/spring-cloud-alibaba/nacos-ha/</a></p>
<h3 id="补充信息-Eureka-高可用"><a href="#补充信息-Eureka-高可用" class="headerlink" title="补充信息 - Eureka 高可用"></a><strong>补充信息 - Eureka 高可用</strong></h3><p>通过部署多节点 Eureka 实例，避免单点问题，满足高可用架构。同时节点之间的地位是平等，节点通信方式采用点对点方式（peer to peer），以便满足数据同步问题，这是一种去中心化的分布式架构。在这种架构中，peer 节点之间通过相互注册来提高可用性，每个peer节点通过serviceUrl指定其他peer节点。如果某台Eureka服务器宕机，Eureka客户端的请求会自动切换到新的Eureka服务器节点，当宕机的服务器重新恢复后，Eureka会再次将其纳入到服务器集群管理中。当节点开始接受客户端请求时，所有的操作也会进行节点间复制，将请求复制到其他Eureka服务器当前所知的节点中。</p>
<h2 id="补充信息-Alibaba-Sentinel"><a href="#补充信息-Alibaba-Sentinel" class="headerlink" title="补充信息 - Alibaba Sentinel"></a>补充信息 - Alibaba Sentinel</h2><p>随着微服务的流行，服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点，从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。</p>
<p>简单来说，<strong>Sentinel是一个轻量级的流量控制、熔断降级 Java 库。</strong></p>
<p>Sentinel 具有以下特征:</p>
<ul>
<li><p><strong>丰富的应用场景</strong>：Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景，例如秒杀（即突发流量控制在系统容量可以承受的范围）、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。</p>
</li>
<li><p><strong>完备的实时监控</strong>：Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据，甚至 500 台以下规模的集群的汇总运行情况。</p>
</li>
<li><p><strong>广泛的开源生态</strong>：Sentinel 提供开箱即用的与其它开源框架/库的整合模块，例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。</p>
</li>
<li><p><strong>完善的 SPI 扩展点</strong>：Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。</p>
</li>
</ul>
<h3 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h3><ol>
<li><p>Spring Cloud系列教程</p>
<p><a target="_blank" rel="noopener" href="http://www.itmuch.com/spring-cloud/spring-cloud-index/">http://www.itmuch.com/spring-cloud/spring-cloud-index/</a></p>
</li>
<li><p>高可用MySQL的搭建可参考</p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/jx_jy/article/details/80165584">https://blog.csdn.net/jx_jy/article/details/80165584</a></p>
<p><a target="_blank" rel="noopener" href="https://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml">https://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml</a></p>
</li>
<li><p>Spring Cloud - Nacos与Eureka区别及如何选型</p>
<p><a target="_blank" rel="noopener" href="https://perkins4j2.github.io/posts/35353/">https://perkins4j2.github.io/posts/35353/</a></p>
</li>
<li><p><strong>2018/12/12 - The following Spring Cloud Netflix modules and corresponding starters will be placed into maintenance mode</strong>:</p>
<p>spring-cloud-netflix-archaius<br>spring-cloud-netflix-hystrix-contract<br>spring-cloud-netflix-hystrix-dashboard<br>spring-cloud-netflix-hystrix-stream<br>spring-cloud-netflix-hystrix<br>spring-cloud-netflix-ribbon<br>spring-cloud-netflix-turbine-stream<br>spring-cloud-netflix-turbine<br>spring-cloud-netflix-zuul<br>This does not include the Eureka or concurrency-limits modules.</p>
<p><strong>What is Maintenance Mode</strong>?<br>Placing a module in maintenance mode means that the Spring Cloud team will no longer be adding new features to the module. We will fix blocker bugs and security issues, and we will also consider and review small pull requests from the community.</p>
<p><a target="_blank" rel="noopener" href="https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode">https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode</a></p>
</li>
</ol>

    </div>

    
    
    

      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1/" rel="tag"># 微服务</a>
          </div>

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/2021/01/12/jdk11%E7%9A%84jni%E7%BC%96%E7%A8%8B/" rel="prev" title="jdk11的jni编程">
      <i class="fa fa-chevron-left"></i> jdk11的jni编程
    </a></div>
      <div class="post-nav-item">
    <a href="/2021/01/17/%E7%AE%97%E6%B3%95%E5%A4%8D%E6%9D%82%E5%BA%A6/" rel="next" title="算法复杂度">
      算法复杂度 <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
          <div class="post-toc motion-element"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E4%BB%80%E4%B9%88%E6%98%AF%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%A1%86%E6%9E%B6"><span class="nav-number">1.</span> <span class="nav-text">什么是微服务框架</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%A1%86%E6%9E%B6%E7%9A%84%E4%BC%98%E7%82%B9"><span class="nav-number">2.</span> <span class="nav-text">微服务框架的优点</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%84%E6%9E%B6%E9%9D%A2%E4%B8%B4%E7%9A%84%E6%8C%91%E6%88%98"><span class="nav-number">3.</span> <span class="nav-text">微服务构架面临的挑战</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%BE%AE%E6%9C%8D%E5%8A%A1%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99"><span class="nav-number">4.</span> <span class="nav-text">微服务设计原则</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%BE%AE%E6%9C%8D%E5%8A%A1%E5%AE%9E%E7%8E%B0%E6%9E%84%E6%9E%B6-Spring-Cloud"><span class="nav-number">5.</span> <span class="nav-text">微服务实现构架 - Spring Cloud</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Spring-Cloud%E7%94%9F%E6%80%81%E4%B8%8B%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88-Spring-Could-Netflix-vs-Spring-Cloud-Alibaba"><span class="nav-number">6.</span> <span class="nav-text">Spring Cloud生态下服务治理解决方案 - Spring Could Netflix vs. Spring Cloud Alibaba</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Spring-Cloud-Netflix"><span class="nav-number"></span> <span class="nav-text">Spring Cloud Netflix</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%9C%AA%E6%9D%A5-amp-%E5%85%B6%E4%BB%96%E7%9A%84%E5%80%99%E9%80%89%E8%80%85"><span class="nav-number"></span> <span class="nav-text">未来&amp;其他的候选者</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A1%A5%E5%85%85%E4%BF%A1%E6%81%AF-Alibaba-Nacos"><span class="nav-number">1.</span> <span class="nav-text">补充信息 - Alibaba Nacos</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%A1%A5%E5%85%85%E4%BF%A1%E6%81%AF-Eureka-%E9%AB%98%E5%8F%AF%E7%94%A8"><span class="nav-number">2.</span> <span class="nav-text">补充信息 - Eureka 高可用</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%A1%A5%E5%85%85%E4%BF%A1%E6%81%AF-Alibaba-Sentinel"><span class="nav-number"></span> <span class="nav-text">补充信息 - Alibaba Sentinel</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99"><span class="nav-number">1.</span> <span class="nav-text">参考资料</span></a></li></ol></div>
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">greentree</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">13</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-tags">
        <span class="site-state-item-count">3</span>
        <span class="site-state-item-name">标签</span>
      </div>
  </nav>
</div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">greentree</span>
</div>
  <div class="powered-by">由 <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://muse.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
  </div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/muse.js"></script>


<script src="/js/next-boot.js"></script>




  















  

  

</body>
</html>
